#!/usr/bin/env python
# -*- coding: utf-8 -*-

# 从这里开始看。

# 比一般教程的签到方法可以存活时间更长，一般半年没有问题（改密码也没事！），正常方法估计三天cookie就失效（二次签到可能会提前失效）~

# 比一般教程多增加了，二次签到、观看60分钟、弹幕、赠送片等签到入口！！
# 并不能帮你完成观看，弹幕任务，需要你自己手动完成任务，然后帮你签到。
# 觉得自己看完、下载完片的记得自己点签到的，不要骂我程序没用，直接删了~

# 改好了可以直接从import requests复制到腾讯云函数内使用！建议每天23点55分执行，省的忘记签看片60分钟等。

# 腾讯视频签到用，会玩的直接看5、6、7步就好。

# 需要准备的东西：1、cookie；2、auth_refresh链接；3、cookie去尾巴；4、自己的server酱（可有可无，微信通知你签到情况）。

# cookie、auth_refresh提取方式：
# 1、谷歌浏览器打开https://v.qq.com；（我用的是360极速浏览器，讲道理google浏览器应该一样）
# 2、登录自己的腾讯视频账号；
# 3、按F12后Filter搜索框左侧选择all，搜索框输入auth，按F5刷新；
# 4、点击name栏里的auth_refresh链接；

# 5、general栏目里的Request UR，就是auth_refresh链接########################
# 6、Request Headers栏目里的cookie就是你的cookie############################
# 7、cookie删除“vqq_vusession=”以后的内容，就是你的”cookie去尾巴“#############

import requests
from apscheduler.schedulers.blocking import BlockingScheduler
import pymongo

scheduler = BlockingScheduler()


def initMongodb():
    client = pymongo.MongoClient('mongodb://root:1@192.168.1.99:27017/admin')
    mongoDb = client["admin"]
    return mongoDb


@scheduler.scheduled_job("interval",id="startTencentMovies",seconds=60)
# @scheduler.scheduled_job("cron",id="startTencentMovies",hour=10,minute=0)
def startTencentMovies():
    db = initMongodb()
    cookies = db['cookie_config']
    res = cookies.find_one({"userid":3956712})
    cookie = str(res['cookie'])
    auth_refresh = res['auth_refresh']
    cookie_little = cookie.split("vqq_vusession=")[0]
    login_headers = {
        'Referer': 'https://v.qq.com',
        'Cookie': cookie  # 这里把cookie替换成自己的cookie，别把引号删了！！
    }

    login = requests.get(auth_refresh, headers=login_headers)  # 这里把auth_refres换成自己的，别把引号删了！！
    cookie = requests.utils.dict_from_cookiejar(login.cookies)
    sign_headers = {
        'Cookie': cookie_little+"vqq_vusession="+cookie['vqq_vusession']+';'#这里把“cookie去尾巴”替换成自己的，别把引号删了！！
    }
    # 任务完成  自动领取....
    sign1 = requests.get('https://vip.video.qq.com/fcgi-bin/comm_cgi?name=hierarchical_task_system&cmd=2',
                         headers=sign_headers).text  # 1次签到接口
    sign1_1 = requests.get('http://v.qq.com/x/bu/mobile_checkin', headers=sign_headers).text  # 2次签到接口
    sign2 = requests.get('https://vip.video.qq.com/fcgi-bin/comm_cgi?name=spp_MissionFaHuo&cmd=4&task_id=1',
                         headers=sign_headers).text  # 观看60分钟签到接口
    sign3 = requests.get('https://vip.video.qq.com/fcgi-bin/comm_cgi?name=spp_MissionFaHuo&cmd=4&task_id=3',
                         headers=sign_headers).text  # 弹幕签到接口
    sign4 = requests.get('https://vip.video.qq.com/fcgi-bin/comm_cgi?name=spp_MissionFaHuo&cmd=4&task_id=6',
                         headers=sign_headers).text  # 赠片签到接口
    sign5 = requests.get('https://vip.video.qq.com/fcgi-bin/comm_cgi?name=spp_MissionFaHuo&cmd=4&task_id=7',
                         headers=sign_headers).text  # 下载签到接口


    if 'Account Verify Error' in sign1:
        print('Sign error,Cookie Invalid')
        # server 酱
        requests.get('https://sc.ftqq.com/SCT86147THxHiTU1guZfNFTYxi3wvM8aP.send?text=%E8%85%BE%E8%AE%AF%E8%A7%86%E9%A2%91%E5%85%A8%E7%AD%BE%E5%88%B0Cookie%E5%A4%B1%E6%95%88&desp=%E8%BF%98%E6%9C%89%E7%A9%BA%E7%82%B9%E5%BC%80%E7%9C%8B%EF%BC%8CCookie%E5%A4%B1%E6%95%88%E4%BA%86%E8%BF%98%E4%B8%8D%E5%8E%BB%E6%9B%B4%E6%96%B0')#这里把“你自己的server酱”替换成你自己的
    else:
        '''
        res:
            QZOutputJson=({ "ret": 0,"checkin_score": 0,"msg":"OK"});
            Service Unavailable
            QZOutputJson=({"msg":"任务未完成","ret":-777902});
            QZOutputJson=({"msg":"OK","ret":0,"score":11});
            QZOutputJson=({"msg":"OK","ret":0,"score":11});
            QZOutputJson=({"msg":"OK","ret":0,"score":11});
            Sign Success
            QZOutputJson=({ "ret": 0,"checkin_score": 0,"msg":"OK"});
            Service Unavailable
            QZOutputJson=({"msg":"任务未完成","ret":-777902});
            QZOutputJson=({"msg":"已发过货","ret":-777903});
            QZOutputJson=({"msg":"已发过货","ret":-777903});
            QZOutputJson=({"msg":"已发过货","ret":-777903});
        '''
        print('Sign Success')
        # server 酱
        requests.get('https://sc.ftqq.com/SCT86147THxHiTU1guZfNFTYxi3wvM8aP.send?text=%E6%81%AD%E5%96%9C%E6%81%AD%E5%96%9C%EF%BC%8C%E8%85%BE%E8%AE%AF%E8%A7%86%E9%A2%91%E5%85%A8%E9%83%A8%E7%AD%BE%E5%88%B0%E6%88%90%E5%8A%9F&desp=%E7%9B%B4%E6%8E%A5%E7%AD%BE%E5%88%B0%3A'+sign1[42:-14]+'%EF%BC%9B%E4%BA%8C%E6%AC%A1%E7%AD%BE%E5%88%B0%E5%AE%8C%E6%88%90'+'%EF%BC%9B%E8%A7%82%E7%9C%8B60%E5%88%86%E9%92%9F%3A'+sign2[42:-3]+'%EF%BC%9B%E5%BC%B9%E5%B9%95%3A'+sign3[42:-3]+'%EF%BC%9B%E8%B5%A0%E7%89%87%3A'+sign4[42:-3]+'%EF%BC%9B%E4%B8%8B%E8%BD%BD%3A'+sign5[42:-3]+'%E3%80%82')#这里把“你自己的server酱”替换成你自己的

# 企业微信 推消息。
def weixin_msg(content):
    # app param
    qywxid = "ww794d769ad87fd1fa"
    agentid = 1000002
    secret = "YCGN5jNGMwr4-UHVEQiCt1L0vnIY_9ds-I4dbdEnpg4"

    wx_push_token = requests.post(url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s'%(qywxid,secret),data="").json()['access_token']
    wx_push_data = {
        "agentid":agentid,
        "msgtype":"text",
        "touser":"@all",
        "text":{
            "content":content
        },
        "safe":0
    }
    res = requests.post('https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s'%wx_push_token,json=wx_push_data)

if __name__ == '__main__':
    print("正在启动任务....")
    # scheduler.start()
    # print("执行任务完成....")
    # weixin_msg()
    scheduler.start()